The rise in electronic and digital device technology has rapidly changed the way society communicates, interacts, and consumes goods and services. Digital technology enables a variety of electronic devices to be available that can be used for a variety of purposes and are relatively cheap. Specifically, modern electronic devices, such as desktop computers, laptops, smart phones, and tablets, allow a user to have access to a variety of useful applications in many locations. Using such applications results in the generation of a large amount of data. Storing and retrieving the produced data is a significant challenge associated with providing useful applications and devices.
The data generated by online services can be stored at data storage facilities remote from any particular user. As the number of users grows so too does the amount of stored data. One technique to protect such data against loss from failure or error is to generate parity data that allows data to be checked for correctness and restored in the case of device failure. Such data may be coded to reduce the amount of parity data needed for these purposes. However, using coded parity data may result in some inefficiencies during the update process because, even for small updates, a large amount of parity data may be regenerated. As a counter measure, reducing the amount of parity data that needs to be updated for each change in the source data can improve the overall functioning of the data storage system significantly.